$(function() {
	$.messager.defaults = $.extend({}, $.messager.defaults, {
		ok : "确定",
		cancel : "取消"
	});
	$.fn.datagrid.defaults = $.extend({}, $.fn.datagrid.defaults, {
		fit : true,
		singleSelect : true,
		rownumbers : true,
		autoRowHeight : false,
		idField : 'id',
		showFilterBar : false,
		filterMatchingType : 'any'
	});
	$.fn.treegrid.defaults = $.extend({}, $.fn.treegrid.defaults, {
		fit : true,
		singleSelect : true,
		rownumbers : true,
		autoRowHeight : false,
		idField : 'id',
		treeField : 'name',
		showFilterBar : false,
		filterMatchingType : 'any'
	});

	$(document).ajaxError(function(event, XMLHttpRequest, options) {
		// var sessionStatus =
		// XMLHttpRequest.getResponseHeader("sessionStatus");
		// if (sessionStatus == 'requireLogin') {
		// window.location.href = 'login';
		// }
		var status = XMLHttpRequest.status;
		if (status == 403) {
			window.location.href = 'login';
		}
	});
	$.ajaxSetup({
		cache : false,
		traditional : true
	});
});

$.extend($.fn.validatebox.defaults.rules, {
	length : {
		validator : function(value, param) {
			return value.length >= param[0] && value.length <= param[1];
		},
		message : '字符数必须必须在[{0},{1}]之间'
	},
	sort : {
		validator : function(value, param) {
			var reg = new RegExp('^\\d{1,9}$', 'g');
			return reg.test(value);
		},
		message : '必须输入位数在[1,9]之间的正整数'
	},
	upperCase : {
		validator : function(value, param) {
			var reg = new RegExp('^[A-Za-z0-9]*$', 'g');
			return reg.test(value);
		},
		message : '必须以字母或数字组成'
	},
	variable : {
		validator : function(value, param) {
			var reg = new RegExp('^[a-zA-Z][a-zA-Z0-9]*$', 'g');
			return reg.test(value);
		},
		message : '必须以字母开头,只能以字母数字组成'
	},
	htmlUnescape : {
		validator : function(value, param) {
			var reg = new RegExp('\\<.*\\>', 'g');
			return !reg.test(value);
		},
		message : '不能输入带<>符号的html标签'
	},
	ajax : {
		validator : function(value, param) {
			var postData = {};
			postData[param[1]] = value;
			var result = $.ajax({
				url : param[0],
				dataType : "json",
				data : postData,
				async : false,
				cache : false,
				type : "post"
			}).responseText;
			return result == "true";
		},
		message : '{2}'
	}
});

var clearInput_icon = {
	iconCls : 'icon-clear',
	handler : function(e) {
		$(this).parents('li').children('input').textbox('clear');
	}
};

$.permission = {
	type : {
		'permission' : 'PERMISSION',
		'resource' : 'RESOURCE'
	}
}

$.fields = {
	code : {
		field : 'code',
		title : '代码',
		width : '140'
	},
	codePath : {
		field : 'codePath',
		title : '代码',
		width : '160'
	},
	name : {
		field : 'name',
		title : '名称',
		width : '140'
	},
	treeField : {
		field : 'name',
		title : '名称',
		width : '260'
	},
	description : {
		field : 'description',
		title : '备注',
		width : '260'
	},
	sort : {
		field : 'sort',
		title : '排序',
		width : 50,
		fixed : true,
		align : 'right'
	},
	createTime : {
		field : 'createTime',
		title : '创建时间',
		width : 150,
		fixed : true
	},
	lastModifyTime : {
		field : 'lastModifyTime',
		title : '修改时间',
		width : 150,
		fixed : true
	},
	status : {
		field : 'locked',
		title : '状态',
		width : 40,
		fixed : true,
		align : 'center',
		formatter : function(value, row, index) {
			return row.enabled ? '' : '<span class="icon-lock" style="display: inline-block;width: 18px; height: 20px;"> </span>';
		}
	},
	checkbox : function(name, disabled) {
		return {
			field : 'ids',
			width : 30,
			fix : true,
			formatter : function(value, row, index) {
				return '<div class="datagrid-cell-check"><input name="' + name + '"  type="checkbox" value="' + row.id + '" ' + (disabled ? 'disabled="disabled"' : '') + ' /></div>';
			}
		}
	},
	'type' : {
		field : 'type',
		title : '类型',
		width : 120,
		formatter : function(value, row, index) {
			return row.type ? row.type.name : '';
		},
		'isFunction' : function(row) {
			return row.type && row.type.code == $.permission.type.permission;
		}
	},
	'dept' : {
		checkbox : function(name, disabled) {
			return {
				field : 'ids',
				width : 30,
				fix : true,
				formatter : function(value, row, index) {
					return '<div class="datagrid-cell-check"><input name="' + name + '"  type="checkbox" value="' + row.id + '" ' + (disabled ? 'disabled="disabled"' : '') + ' /></div>';
				}
			}
		}
	},
	'position' : {
		checkbox : function(name, disabled) {
			return {
				field : 'ids',
				width : 30,
				fix : true,
				formatter : function(value, row, index) {
					if ($.fields.position.isPosition(row)) {
						return '<div class="datagrid-cell-check"><input name="' + name + '"  type="checkbox" value="' + row.id + '" ' + (disabled ? 'disabled="disabled"' : '') + ' /></div>';
					} else {
						return '';
					}
				}
			}
		},
		'isPosition' : function(row) {
			return row.sort == undefined;
		}
	},
	'permission' : {
		checkbox : function(name, disabled) {
			return {
				field : 'ids',
				width : 30,
				fix : true,
				formatter : function(value, row, index) {
					if ($.fields.type.isFunction(row)) {
						return '<div class="datagrid-cell-check"><input name="' + name + '"  type="checkbox" value="' + row.id + '" ' + (disabled ? 'disabled="disabled"' : '') + ' /></div>';
					} else {
						return '';
					}
				}
			}
		}
	}
}
